package com.xxg.renrenproduct.service;

import com.xxg.renrencommon.domain.bean.CarryProductSettingInfo;
import com.xxg.renrencommon.domain.result.BaseResult;
import com.xxg.renrenproduct.domain.query.SetGlobalQuery;
import com.xxg.renrenproduct.domain.query.SetGlobalRatioQuery;
import com.xxg.renrenproduct.domain.query.SetSingleQuery;
import com.xxg.renrenproduct.domain.query.SetSingleRatioQuery;

/**
 * 类说明
 *
 * @author szj
 * @date 2021/11/30
 */
public interface CarryProductSettingService {
    /**
     * 设置全局带货权限
     *
     * @param userId 登录id
     * @param query  设置全局带货权限参数
     * @return BaseResult<Void>
     */
    BaseResult<Void> setGlobal(String userId, SetGlobalQuery query);

    /**
     * 设置全局带货系数
     *
     * @param userId 登录id
     * @param query  设置全局带货权限参数
     * @return BaseResult<Void>
     */
    BaseResult<Void> setGlobalRatio(String userId, SetGlobalRatioQuery query);

    /**
     * 设置单个带货权限
     *
     * @param userId 登录id
     * @param query  设置单个带货权限参数
     * @return BaseResult<Void>
     */
    BaseResult<Void> setSingle(String userId, SetSingleQuery query);


    /**
     * 设置单个带货权限
     *
     * @param userId 登录id
     * @param query  设置单个带货权限参数
     * @return BaseResult<Void>
     */
    BaseResult<Void> setSingleRatio(String userId, SetSingleRatioQuery query);

    /**
     * 查询是否存在单个设置
     *
     * @param userId 登录id
     * @return BaseResult<Boolean>
     */
    BaseResult<Boolean> hasSpuSetting(String userId);

    /**
     * 查询全局设置
     *
     * @param userId 登录id
     * @return BaseResult<CarryProductSettingInfo>
     */
    BaseResult<CarryProductSettingInfo> getGlobalSetting(String userId);

    /**
     * 查询单个设置
     *
     * @param userId 登录id
     * @param spuId  spuId
     * @return BaseResult<CarryProductSettingInfo>
     */
    BaseResult<CarryProductSettingInfo> getSpuSetting(String userId, Integer spuId);

    /**
     * 查询单个设置(包含非自己)
     *
     * @param userId 登录id
     * @param spuId  spuId
     * @return BaseResult<CarryProductSettingInfo>
     */
    BaseResult<CarryProductSettingInfo> getSpuSettingContainOther(String userId, Integer spuId);
}
